#include <stdio.h>
#include <vector>
#include <cstring>

namespace clsd {

struct Vec4f {
    float v[4];
    float& operator[](int i) { return v[i]; }
    Vec4f() { memset((void *)v, 0x00, sizeof (float) * 4); };
    Vec4f(const float& v0, const float& v1, const float& v2, const float& v3) {
        v[0] = v0; v[1] = v1; v[2] = v2; v[3] = v3;
    }
};

class CLSD {

public:

    CLSD();
    ~CLSD();

    std::vector<Vec4f> Detect(const unsigned char *i_edge, const unsigned int i_edge_h, const unsigned int i_edge_w) const;

private:
    void *_m = NULL;
};

}
